package 剑指offer;

public class p46把数字翻译成字符串 {
    public int translateNum(int num) {
        //动态规划
        String s=String.valueOf(num);//数字 转成 字符串

        int[] dp=new int[s.length()];
        dp[0]=1;
        //dp[i]    代表第i位有多少种翻译方法
        //dp[0]=1  代表第1位有1种翻译方法

        for (int i = 1; i <s.length(); i++) {
            //i   表示当前的倒数第一个字符
            //i-1 表示当前的倒数第二个字符
            if (s.charAt(i-1)=='1' || (s.charAt(i-1)=='2' && s.charAt(i)<='5')) {
                //如果倒数第二个字符为1 或者 倒数第二个字符为2且倒数第一个字符 小于等于5，那么 dp[i]=dp[i-1]+dp[i-2]
                if (i==1) {
                    //第二个字符，没有dp[i-2]，所以 dp[1]=2
                    dp[i]=2;
                }else {
                    dp[i]=dp[i-1]+dp[i-2];
                }
            }else {
                //dp[i]=dp[i-1]
                dp[i]=dp[i-1];
            }
        }
        return dp[s.length()-1];
    }
}
